<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script  src="http://libs.baidu.com/jquery/1.9.0/jquery.js">
        console.log("合理处理嵌套请求")
        // 查出当前用户信息
        // 根据 id 查询当前用户的课程
        // 更加课程 id 得到当前用户的成绩
        $.ajax({
            url : "mock/user.json",
            success: function(data) {
                console.log(data)
                // 查询课程
                    // 查询课程成功，查询成绩
                        // —— 嵌套查询非常凌乱 ~~
            },
            error: function(error){
                console.log("失败")
            }
        })

        // promise 可以封装异步操作
        let p = new Promise((resovle, reject)=>{
            console.log("进入")
            // 异步操作
            $.ajax({
                url : "mock/user.json",
                success: function(data) {
                    console.log("查询用户成功", data)
                    resovle(data)
                },
                error: function(error){
                    reject(error)
                    console.log("失败")
                }
            })
        });

        // promise 操作成功
        p.then((obj) => {

            return new Promise((resovle, reject)=>{
                    $.ajax({
                    url : `mock/user_course_${obj.id}.json`,
                    success: function(data) {
                        console.log("查询用户课程成功", data)
                        resovle(data)
                    },
                    error: function(error){
                        reject(error)
                    }
                })
            });

        }).catch((error)=>{

        }).then((data)=>{
            console.log("上一步的结果" + data);
            $.ajax({
                url : `mock/user_score_${obj.id}.json`,
                success: function(data) {
                    console.log("查询用户课程成绩成功", data)
                    resovle(data)
                },
                error: function(error){
                    reject(error)
                }
            })
        })

        
    </script>
</body>
</html>